import { Context } from 'egg';
import { UserRole } from '../model/user';

export default () => {
    return async (ctx: Context, next: () => Promise<any>) => {
        try {
            const userId = ctx.state.user.userId;
            const user = await ctx.service.db.user.findOneById(userId);
            if (!user) {
                ctx.helper.unauth();
            }
            ctx.user = user!;
            if (ctx.request.path.startsWith('/api/v1/admin')) {
                // 需要判断管理员账号
                if (ctx.user.role !== UserRole.SuperAdmin
                    && ctx.user.role !== UserRole.Admin) {
                    ctx.helper.unauth();
                }
            }
        } catch (err) {
            ctx.helper.unauth();
        }
        await next();
    };
};
